package com.qidianit.mes.pro.controller;

import com.github.pagehelper.PageInfo;
import com.qidianit.mes.pojo.Result;
import com.qidianit.mes.pojo.pro.Process;
import com.qidianit.mes.pro.service.ProcessService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 工序管理控制器
 */
@RestController
@RequestMapping("/process") // 接口统一前缀，与工序业务对应
public class ProcessController {
    @Autowired
    private ProcessService processService;

    @GetMapping("/autoCode")
    public Result<String> autoCode(){
        return processService.autoCode();
    }

    /**
     * 批量删除工序（逻辑删除）
     * 请求方式：DELETE
     * 请求路径：/process/batchDelete
     * 请求参数：ids（工序 ID 数组，如？ids=1&ids=2）
     */
    @DeleteMapping("/batchDelete")
    public Result batchDelete(Long[] id) {
        return processService.batchDelete(id);
    }

    /**
     * 根据 ID 删除工序（逻辑删除）
     * 请求方式：DELETE
     * 请求路径：/process/delete/{id}（路径参数传递 ID）
     */
    @DeleteMapping("/delete/{id}")
    public Result deleteById(@PathVariable Long id) {
        return processService.deleteById(id);
    }

    /**
     * 更新工序信息
     * 请求方式：PUT
     * 请求路径：/process/update
     * 请求体：JSON 格式的工序信息（含 ID）
     */
    @PutMapping("/update")
    public Result update(@RequestBody Process process) {
        return processService.updateById(process);
    }

    /**
     * 新增工序
     * 请求方式：POST
     * 请求路径：/process/add
     * 请求体：JSON 格式的工序信息（不含 ID，自增）
     */
    @PostMapping("/add")
    public Result save(@RequestBody Process process) {
        return processService.saveProcess(process);
    }

    /**
     * 根据工序编码精确查询
     * 请求方式：GET
     * 请求路径：/process/code/{processCode}（路径参数传递编码）
     */
    @GetMapping("/code/{processCode}")
    public Result<Process> getByCode(@PathVariable("processCode") String processCode) {
        return processService.selectByCode(processCode);
    }

    /**
     * 分页查询工序列表（多条件筛选）
     * 请求方式：GET
     * 请求路径：/process/page
     * 请求参数：process（筛选条件，如 processCode、processName）、pageNum（默认 1）、pageSize（默认 10）
     */
    @GetMapping("/page")
    public Result<PageInfo<Process>> list(
            Process process,
            @RequestParam(defaultValue = "1") int page,
            @RequestParam(defaultValue = "10") int size) {
        return processService.selectList(process, page, size);
    }
}